/**
 * 获取任意时间
 */
function getDate(date, AddDayCount = 0) {
	if (!date) {
		date = new Date()
	}
	if (typeof date !== 'object') {
		date = date.replace(/-/g, '/')
	}
	const dd = new Date(date)

	dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期

	const y = dd.getFullYear()
	const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期，不足10补0
	const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号，不足10补0
	return {
		fullDate: y + '-' + m + '-' + d,
		year: y,
		month: m,
		date: d,
		day: dd.getDay()
	}
}
/**
 * 记录授权前最后一次的页面，以便授权完返回到这个页面
 */
function changeLastPage() {
	let pages = getCurrentPages() //获取加载的页面
	let currentPage = pages[pages.length - 1] //获取当前页面的对象
	let url = currentPage.route //当前页面url
	let options = currentPage.options //如果要获取url中所带的参数可以查看options
	uni.setStorageSync('lastPagePath', url);
	uni.setStorageSync('lastPageOptions', options);
	console.log("当前页面url:", url)
	console.log("url中所带的参数options:", options)
}
/**
 * 跳转最后一次保留的页面
 */
function redirectLastPath() {
	let obj = uni.getStorageSync("lastPageOptions");
	let p = "?";
	if (obj) {
		for (const o in obj) {
			p += o + "=" + obj[o] + "&"
		}
		if (p != "?") {
			p = p.substring(0, p.length - 1);
		}
	}
	console.log(uni.getStorageSync('lastPagePath'))
	uni.redirectTo({
		url: "/" + uni.getStorageSync('lastPagePath') + p,
		fail: function() {
			uni.switchTab({
				url: "/" + uni.getStorageSync('lastPagePath'),
			})
		}
	})
}
/**
 * 跳转页面之前判断是否登录
 */
function checkPageLogin(url) {
	changeLastPage();
	if (!uni.getStorageSync('userInfo') || !uni.getStorageSync('userInfo').openid || !uni.getStorageSync('userInfo').mobile) {
		uni.reLaunch({
			url: '/pages/login/index'
		})
	} else {
		uni.navigateTo({
			url: url,
			fail() {
				uni.switchTab({
					url: url
				})
			}
		})
	}

}
/**
 * 2到15个字符
 * @param {Object} 
 */
function is2_15_str(s) {
	if (isRightfulString(s) && s.length >= 2 && s.length <= 15) {
		return true;
	}
	return false;
}
/**
 * 只能输入数字[0-9]
 */
function isDigits(str) {
	if (str == null || str == "") return false;
	var result = str.match(/^\d+$/);
	if (result == null) return false;
	return true;
}

function isPhone(value) {
	var length = value.length;
	var mobile =
		/^((\+|00)86)?((134\d{4})|((13[0-3|5-9]|14[1|5-9]|15[0-9]|16[2|5|6|7]|17[0-8]|18[0-9]|19[0-2|5-9])\d{8}))$/;
	return length == 11 && mobile.test(value);
}
/**
 * 匹配密码，以字母开头，长度在6-12之间，只能包含字符、数字和下划线。
 */
function isPwd(str) {
	if (str == null || str == "") return false;
	var result = str.match(/^[a-zA-Z]\\w{6,12}$/);
	if (result == null) return false;
	return true;
}
/**
 * 判断是否为合法字符(a-zA-Z0-9-_)
 */
function isRightfulString(str) {
	if (str == null || str == "") return false;
	var result = str.match(/^[A-Za-z0-9_-]+$/);
	if (result == null) return false;
	return true;
}
/**
 * 匹配Email地址
 */
function isEmail(str) {
	if (str == null || str == "") return false;
	var result = str.match(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/);
	if (result == null) return false;
	return true;
}


function isNotBlank(s) {

	if (s != undefined && s != null && s.toString().replace(/\s/g, '').replace(/(.{4})/g, "$1 ").trim() != '') {
		return true;
	}
	return false;
}
/**
 * 检查权限
 * @param {Object} arr
 * @param {Object} menuId
 */
function checkPerms(arr, menuId) {
	try {
		let f = false;
		arr.forEach(e => {
			if (e.menuId == menuId) {
				f = true;
			}
		})
		return f;
	} catch (e) {
		return false;
	}

}
export {
	changeLastPage,
	redirectLastPath,
	checkPageLogin,
	is2_15_str,
	isEmail,
	isRightfulString,
	isPwd,
	isNotBlank,
	isDigits,
	getDate,
	checkPerms,
	isPhone
}
